package com.tbit.main.dao.core;

import com.tbit.main.pojo.AccountUser;
import com.tbit.main.pojo.AccountUserBound;
import com.tbit.main.pojo.HolderAccountBound;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 账号表
 *
 * @author Leon
 * 2019年11月9日 下午2:06:25
 */
public interface AccountUserDao {

    /**
     * 根据手机号码查询
     *
     * @param accountUser
     * @return
     */
    AccountUser getByPhone(AccountUser accountUser);

    /**
     * 根据账号类型查询
     *
     * @param accountUserBound
     * @return
     */
    List<AccountUser> getByAccountUserType(AccountUserBound accountUserBound);

    /**
     * 根据运维人员ids查询
     *
     * @param map
     * @return
     */
    List<AccountUser> getRegionIdsUser(Map<String, Object> map);

    /**
     * 根据id查询
     *
     * @param accountUserId
     * @return
     */
    AccountUser getById(Integer accountUserId);

    /**
     * 根据id查询
     *
     * @param accountUserId id
     * @return 账号信息
     */
    AccountUser getAccountUserById(Integer accountUserId);

    /**
     * 根据id查询
     *
     * @param accountUserIds
     * @return
     */
    List<AccountUser> getByIds(@Param("accountUserIds") String accountUserIds);

    /**
     * 添加
     *
     * @param accountUser
     */
    void insert(AccountUser accountUser);

    /**
     * 绑定角色
     *
     * @param accountUserBound
     */
    void insertBound(AccountUserBound accountUserBound);

    /**
     * 更新
     *
     * @param accountUser
     */
    void update(AccountUser accountUser);

    /**
     * 删除
     *
     * @param accountuserId
     */
    void del(Integer accountuserId);

    /**
     * 查询用户绑定信息
     *
     * @param accountuserId
     * @return
     */
    AccountUserBound getBoundByUserId(Integer accountuserId);

    /**
     * 股东绑定区域查询
     *
     * @param accountuserId
     * @return
     */
    List<HolderAccountBound> getHolderBoundByUserId(Integer accountuserId);

    /**
     * 根据运营区域和type查询人数
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getByAccountIdAndType(Map<String, Object> map);

    /**
     * 查询所有
     *
     * @return
     */
    List<AccountUser> getAll();

    /**
     * 查询所有
     *
     * @return
     */
    List<AccountUser> getAllAccount();

    /**
     * 修改到期时间和角色类型
     */
    void editExpire(AccountUserBound accountUserBound);

    /**
     * 修改到期时间和角色类型
     * @param accountUserId 账号id
     * @param password  密码
     */
    void updatePassword(@Param("accountUserId") Integer accountUserId, @Param("password")String password);
}